#pragma once
#include<iostream>
#include<string>
#include<fstream>
#include<unordered_map>
#include"log.hpp"

using namespace std;

const string dictname="./dict.txt";
const string sep=":";

class Init
{
public:
    static bool Split(string&s,string *part1,string *part2)
    {
        auto pos=s.find(sep);
        if(pos==string::npos) return false;
        *part1=s.substr(0,pos);//pos位置为：
        *part2=s.substr(pos+1);
        return true;
    }
    Init()
    {//ifstream是文件专属输入流
        ifstream in(dictname);
        if(!in.is_open())
        {
            lg(Fatal,"ifstream open %s error",dictname.c_str());
            exit(1);
        }
        string line;
        while(getline(in,line))//in是专门关联到打开文件的读写通道，会自动打开文件并读取其中信息
        {
            string part1,part2;
            Split(line,&part1,&part2);
            dict.insert({part1,part2});
        }
        in.close();
    }
    string translation(const string&key)
    {
        auto it=dict.find(key);//it是迭代器，指向dict中一个键值对
        if(it==dict.end()) return "Unknow";//映射到末尾，没有找到
        else return it->second;
    }
private:
    unordered_map<string,string>dict;
};